1 Use of Force

# Load necessary libraries

# Reading and wrangling
library(googlesheets4)
library(readr)
library(tidyverse)
library(janitor)
library(lubridate)
library(DT)

# Plotting
library(ggplot2)
library(RColorBrewer)

# Tables
library(kableExtra)

# Load custom function
source("function_clean_facility_names.R", local = knitr::knit_global())
# Read Google Sheet incident worksheet, convert to data frame, and wrangle
df_324_inc <- read_sheet("https://docs.google.com/spreadsheets/d/1im5VSi3bIEi13O8WQ56wEIXSyNEstbGMylXXgD9bAG0/edit#gid=1858227071",
                 sheet="G-324A-19-inc",
                 col_types = "c") %>% 
  clean_names() %>%
  
  # Run custom cleaning function
  clean_facility_names() %>% 


  # df_specific changes
  unite(date, year:month) %>% 
  mutate(facility = as.factor(facility),
         state = as.factor(state),
         date = ym(date)
         ) %>% 
  mutate_at(c(6:76), as.numeric)

1.1 Summary Tables

df_force <- df_324_inc %>%
  
  # Subset the df to only the used cols
  select(id, facility, date,
       immediate_use_of_force_incidents:
       strip_searches
       ) %>% 
  
  # Need the rowwise function to compute a row-at-a-time
  # in the following mutate function
  rowwise(id) %>% 
  
  # Create a new total column
  mutate(total_use_of_force = sum(c_across(
       immediate_use_of_force_incidents:
       strip_searches
  ))) %>% 

  # Call a range of table columns and pivot long
  pivot_longer(.,
               cols=  immediate_use_of_force_incidents:total_use_of_force,
               names_to = "use_of_force_type",
               values_to = "use_of_force_count") %>%
  
  # Remove NA values
  drop_na() %>% 
  
  # Explicitly define factors
  mutate(use_of_force_type = factor(use_of_force_type, levels = c(
    "immediate_use_of_force_incidents",
    "calculated_use_of_force_incidents",
    "uses_of_force_with_chemical_agents",
    "incidents_where_non_lethal_weapons_were_used",
    "number_of_times_4_5_point_restraints_were_used",
    "use_of_force_with_serious_injury",
    "strip_searches",
    "total_use_of_force"
  )))
df_force %>% 
  group_by(use_of_force_type) %>% 
  summarise(`Total Use of Force by Type` = sum(use_of_force_count)) %>% 
  ungroup() %>% 
  kable(caption = "Total Use of Force by Type",
        col.names = c("Use of Force Type", "Total Use of Force Type")) %>% 
  kable_styling(c("hover", "striped", "condensed", "responsive"))
Table 1.1: Total Use of Force by Type
Use of Force Type Total Use of Force Type
immediate_use_of_force_incidents 1184
calculated_use_of_force_incidents 325
uses_of_force_with_chemical_agents 362
incidents_where_non_lethal_weapons_were_used 18
number_of_times_4_5_point_restraints_were_used 97
use_of_force_with_serious_injury 2
strip_searches 20629
total_use_of_force 19170
df_force %>% 
  group_by(facility) %>% 
  summarise(total_use_of_force = sum(use_of_force_count)) %>% 
  arrange(desc(total_use_of_force)) %>% 
  ungroup() %>% 
  kable(caption = "Total Use of Force by Facility",
        col.names = c("Facility", "Total Use of Force by Facility")) %>% 
  kable_styling(c("hover", "striped", "condensed", "responsive")) %>% 
  scroll_box(height = "300px")
Table 1.1: Total Use of Force by Facility
Facility Total Use of Force by Facility
Immigration Centers of America - Farmville 10782
La Palma Correctional Center 6022
Sheriff Al Cannon Detention Center 4854
Worcester County Jail 3348
Essex County Correctional Facility 2620
Hudson County Corrections and Rehabilitation Center 2294
York County Prison 2017
Cambria County Prison 1500
Pike County Correctional Facility 1120
Hall County Department of Corrections 916
Teller County Jail 876
Northern Oregon Correctional Facility 862
Eloy Detention Center 496
Bergen County Jail 294
Calhoun County Correctional Center 282
South Texas ICE Processing Center 254
Port Isabel Service Processing Center 234
Stewart Detention Center 174
Adelanto ICE Processing Center - West 164
Sherburne County Jail 150
Northwest ICE Processing Center 138
Bristol County Jail and House of Correction 130
Glades County Detention Center 126
Folkston ICE Processing Center 122
Otay Mesa Detention Center 120
Montgomery Processing Center 116
LaSalle ICE Processing Center 112
Baker County Detention Center 92
Krome Service Processing Center 80
Aurora ICE Processing Center 66
Aurora ICE Processing Center II - Annex 66
El Paso Service Processing Center 66
Jena LaSalle Detention Facility 66
River Correctional Center 66
Mesa Verde ICE Processing Facility 60
Pine Prairie ICE Processing Center 56
Donald W. Wyatt Detention Facility 54
Wakulla County Detention Facility 54
McHenry County Adult Correctional Facility 46
Irwin County Detention Center 42
Pulaski County Detention Center 42
Limestone County Detention Center 40
Prairieland Detention Center 40
Imperial Regional Detention Facility 38
Winn Correctional Center 36
Strafford County Department of Corrections 33
Bluebonnet Detention Center 32
Caroline Detention Facility 32
Johnson County Corrections Center 28
Adelanto ICE Processing Center - East 26
Jackson Parish Correctional Center 26
Boone County Jail 24
Houston Contract Detention Facility 24
Okmulgee County Jail - Moore Detention Facility 24
Morrow County Correctional Facility 22
Catahoula Correctional Center 20
Polk County Adult Detention Center 20
Dodge County Detention Facility 18
Orange County Correctional Facility 18
Otero County Processing Center 18
Yuba County Jail 18
CCA Florence Correctional Center 16
Plymouth County Correctional Facility 16
Shawnee County Department of Corrections - Adult Detention Center 16
Torrance County Detention Facility 16
Butler County Jail 14
Adams County Correctional Center 12
David L. Moss Criminal Justice Center 12
Eden Detention Center 12
Elizabeth Contract Detention Facility 12
Joe Corley Processing Center 12
Webb County Detention Center 12
Bossier Parish Corrections Center 10
Freeborn County Adult Detention Center 10
Krome North Service Processing Center 10
Broward Transitional Center 8
Clinton County Correctional Facility 8
Nye County Detention Center 8
Rio Grande Detention Center 8
Clay County Jail 6
Richwood Correctional Center 6
Val Verde Correctional Facility 6
Florence Service Processing Center 4
Folkston ICE Processing Center Annex 4
Hardin County Jail 4
Henderson Detention Center 4
Morgan County Adult Detention Center 4
Seneca County Jail 4
South Louisiana ICE Processing Center 4
Allen Parish Public Safety Complex 2
El Valle Detention Facility 2
Geauga County Jail 2
Howard County Detention Center 2
Kay County Detention Center 2
Rolling Plains Detention Center 2
Cass County Jail 1
Alamance County Detention Center 0
Brooks County Detention Center 0
Carver County Jail 0
Chippewa County Correctional Facility 0
Christian County Jail 0
Cibola County Correctional Center 0
Coastal Bend Detention Center 0
Desert View Annex 0
Dorchester County Detention Center 0
Douglas County Department of Corrections 0
East Hidalgo Detention Center 0
Golden State Annex 0
Jerome Combs Detention Center 0
Laredo Processing Center 0
LaSalle Correctional Center 0
LaSalle County Regional Detention Center 0
Monroe County Inmate Dormitory 0
Montgomery County Jail 0
Platte County Detention Center 0
Robert A. Deyton Detention Facility 0
Saint Clair County Jail 0
San Luis Regional Detention Center 0
T. Don Hutto Residential Center 0
Washoe County Detention Center 0
West Texas Detention Facility 0
Western Tennessee Detention Facility 0
Willacy County Regional Detention Facility 0

1.2 Facet Plot of Use of Force by Facility

# Generating a linetype vector for use in the plot
plot_lines <- c(
    "solid",
    "solid",
    "solid",
    "solid",
    "solid",
    "solid",
    "solid",
    "dotted"
    )

# Use Color Brewer to set colors and modify
# the last color to be black for totals.
plot_colors <- brewer.pal(8, "Paired")
plot_colors[8] <- "#000000"

# Create plot labels
plot_labels <- c(
    "Immediate Use of Force Incidents",
    "Calculated Use of Force Incidents",
    "Uses of Force with Chemical Agents",
    "Incidents Where Non-Lethal Weapons Were Used",
    "Times 4/5 Point Restraints Used",
    "Use of Force With Serious Injury",
    "Strip Searches",
    "Total Disciplinary")

df_force %>% 
  
  # Calling the plot and formatting
  ggplot(aes(x=date, y = use_of_force_count, linetype=use_of_force_type))+
  geom_line(aes(color = use_of_force_type), size = .65) +
  
  # setting the linetype
  scale_linetype_manual(
    values = plot_lines,
    labels = plot_labels,
    name = "Use of Force Type:",
    guide = guide_legend(nrow = 8)
    )+
  
  # Setting the color
  scale_color_manual(
  values = plot_colors,
  labels = plot_labels,
  name = "Use of Force Type:",
  )+

  labs(title = "Disciplinary")+
  ylab("Number of Disciplinary Infractions")+
  xlab("Date")+
  theme(
    strip.text = element_text(size = 8),
    legend.position = "bottom"
    )+

    # Set the legend to multiple rows
  guides(col = guide_legend(nrow =8))+
  
  # Wrap
  facet_wrap(~ facility, ncol=3)

LS0tDQp0aXRsZTogIlVzZS1vZi1Gb3JjZSINCmF1dGhvcjogIk5hdGhhbiBDcmFpZyINCmRhdGU6ICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVBICVCICVkLCAlWScpYCINCm91dHB1dDoNCiAgYm9va2Rvd246Omh0bWxfZG9jdW1lbnQyOiANCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCiAgICBkZl9wcmludDogcGFnZWQNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQpiaWJsaW9ncmFwaHk6IFtjaXRhdGlvbnMuYmliLCBwYWNrYWdlcy5iaWJdDQotLS0NCg0KIyBVc2Ugb2YgRm9yY2UNCg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldCgNCgllY2hvID0gVFJVRSwNCgltZXNzYWdlID0gRkFMU0UsDQoJd2FybmluZyA9IEZBTFNFDQopDQpgYGANCg0KYGBge3IgbG9hZC1saWJyYXJpZXN9DQojIExvYWQgbmVjZXNzYXJ5IGxpYnJhcmllcw0KDQojIFJlYWRpbmcgYW5kIHdyYW5nbGluZw0KbGlicmFyeShnb29nbGVzaGVldHM0KQ0KbGlicmFyeShyZWFkcikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShqYW5pdG9yKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KERUKQ0KDQojIFBsb3R0aW5nDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KFJDb2xvckJyZXdlcikNCg0KIyBUYWJsZXMNCmxpYnJhcnkoa2FibGVFeHRyYSkNCg0KIyBMb2FkIGN1c3RvbSBmdW5jdGlvbg0Kc291cmNlKCJmdW5jdGlvbl9jbGVhbl9mYWNpbGl0eV9uYW1lcy5SIiwgbG9jYWwgPSBrbml0cjo6a25pdF9nbG9iYWwoKSkNCmBgYA0KDQpgYGB7ciByZWFkLWRhdGEtMzI0LWluY2lkZW50fQ0KIyBSZWFkIEdvb2dsZSBTaGVldCBpbmNpZGVudCB3b3Jrc2hlZXQsIGNvbnZlcnQgdG8gZGF0YSBmcmFtZSwgYW5kIHdyYW5nbGUNCmRmXzMyNF9pbmMgPC0gcmVhZF9zaGVldCgiaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3ByZWFkc2hlZXRzL2QvMWltNVZTaTNiSUVpMTNPOFdRNTZ3RUlYU3lORXN0YkdNeWxYWGdEOWJBRzAvZWRpdCNnaWQ9MTg1ODIyNzA3MSIsDQogICAgICAgICAgICAgICAgIHNoZWV0PSJHLTMyNEEtMTktaW5jIiwNCiAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gImMiKSAlPiUgDQogIGNsZWFuX25hbWVzKCkgJT4lDQogIA0KICAjIFJ1biBjdXN0b20gY2xlYW5pbmcgZnVuY3Rpb24NCiAgY2xlYW5fZmFjaWxpdHlfbmFtZXMoKSAlPiUgDQoNCg0KICAjIGRmX3NwZWNpZmljIGNoYW5nZXMNCiAgdW5pdGUoZGF0ZSwgeWVhcjptb250aCkgJT4lIA0KICBtdXRhdGUoZmFjaWxpdHkgPSBhcy5mYWN0b3IoZmFjaWxpdHkpLA0KICAgICAgICAgc3RhdGUgPSBhcy5mYWN0b3Ioc3RhdGUpLA0KICAgICAgICAgZGF0ZSA9IHltKGRhdGUpDQogICAgICAgICApICU+JSANCiAgbXV0YXRlX2F0KGMoNjo3NiksIGFzLm51bWVyaWMpDQpgYGANCg0KDQojIyBTdW1tYXJ5IFRhYmxlcw0KDQpgYGB7cn0NCmRmX2ZvcmNlIDwtIGRmXzMyNF9pbmMgJT4lDQogIA0KICAjIFN1YnNldCB0aGUgZGYgdG8gb25seSB0aGUgdXNlZCBjb2xzDQogIHNlbGVjdChpZCwgZmFjaWxpdHksIGRhdGUsDQogICAgICAgaW1tZWRpYXRlX3VzZV9vZl9mb3JjZV9pbmNpZGVudHM6DQogICAgICAgc3RyaXBfc2VhcmNoZXMNCiAgICAgICApICU+JSANCiAgDQogICMgTmVlZCB0aGUgcm93d2lzZSBmdW5jdGlvbiB0byBjb21wdXRlIGEgcm93LWF0LWEtdGltZQ0KICAjIGluIHRoZSBmb2xsb3dpbmcgbXV0YXRlIGZ1bmN0aW9uDQogIHJvd3dpc2UoaWQpICU+JSANCiAgDQogICMgQ3JlYXRlIGEgbmV3IHRvdGFsIGNvbHVtbg0KICBtdXRhdGUodG90YWxfdXNlX29mX2ZvcmNlID0gc3VtKGNfYWNyb3NzKA0KICAgICAgIGltbWVkaWF0ZV91c2Vfb2ZfZm9yY2VfaW5jaWRlbnRzOg0KICAgICAgIHN0cmlwX3NlYXJjaGVzDQogICkpKSAlPiUgDQoNCiAgIyBDYWxsIGEgcmFuZ2Ugb2YgdGFibGUgY29sdW1ucyBhbmQgcGl2b3QgbG9uZw0KICBwaXZvdF9sb25nZXIoLiwNCiAgICAgICAgICAgICAgIGNvbHM9ICBpbW1lZGlhdGVfdXNlX29mX2ZvcmNlX2luY2lkZW50czp0b3RhbF91c2Vfb2ZfZm9yY2UsDQogICAgICAgICAgICAgICBuYW1lc190byA9ICJ1c2Vfb2ZfZm9yY2VfdHlwZSIsDQogICAgICAgICAgICAgICB2YWx1ZXNfdG8gPSAidXNlX29mX2ZvcmNlX2NvdW50IikgJT4lDQogIA0KICAjIFJlbW92ZSBOQSB2YWx1ZXMNCiAgZHJvcF9uYSgpICU+JSANCiAgDQogICMgRXhwbGljaXRseSBkZWZpbmUgZmFjdG9ycw0KICBtdXRhdGUodXNlX29mX2ZvcmNlX3R5cGUgPSBmYWN0b3IodXNlX29mX2ZvcmNlX3R5cGUsIGxldmVscyA9IGMoDQogICAgImltbWVkaWF0ZV91c2Vfb2ZfZm9yY2VfaW5jaWRlbnRzIiwNCiAgICAiY2FsY3VsYXRlZF91c2Vfb2ZfZm9yY2VfaW5jaWRlbnRzIiwNCiAgICAidXNlc19vZl9mb3JjZV93aXRoX2NoZW1pY2FsX2FnZW50cyIsDQogICAgImluY2lkZW50c193aGVyZV9ub25fbGV0aGFsX3dlYXBvbnNfd2VyZV91c2VkIiwNCiAgICAibnVtYmVyX29mX3RpbWVzXzRfNV9wb2ludF9yZXN0cmFpbnRzX3dlcmVfdXNlZCIsDQogICAgInVzZV9vZl9mb3JjZV93aXRoX3NlcmlvdXNfaW5qdXJ5IiwNCiAgICAic3RyaXBfc2VhcmNoZXMiLA0KICAgICJ0b3RhbF91c2Vfb2ZfZm9yY2UiDQogICkpKQ0KYGBgDQoNCmBgYHtyfQ0KZGZfZm9yY2UgJT4lIA0KICBncm91cF9ieSh1c2Vfb2ZfZm9yY2VfdHlwZSkgJT4lIA0KICBzdW1tYXJpc2UoYFRvdGFsIFVzZSBvZiBGb3JjZSBieSBUeXBlYCA9IHN1bSh1c2Vfb2ZfZm9yY2VfY291bnQpKSAlPiUgDQogIHVuZ3JvdXAoKSAlPiUgDQogIGthYmxlKGNhcHRpb24gPSAiVG90YWwgVXNlIG9mIEZvcmNlIGJ5IFR5cGUiLA0KICAgICAgICBjb2wubmFtZXMgPSBjKCJVc2Ugb2YgRm9yY2UgVHlwZSIsICJUb3RhbCBVc2Ugb2YgRm9yY2UgVHlwZSIpKSAlPiUgDQogIGthYmxlX3N0eWxpbmcoYygiaG92ZXIiLCAic3RyaXBlZCIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpKQ0KDQoNCmRmX2ZvcmNlICU+JSANCiAgZ3JvdXBfYnkoZmFjaWxpdHkpICU+JSANCiAgc3VtbWFyaXNlKHRvdGFsX3VzZV9vZl9mb3JjZSA9IHN1bSh1c2Vfb2ZfZm9yY2VfY291bnQpKSAlPiUgDQogIGFycmFuZ2UoZGVzYyh0b3RhbF91c2Vfb2ZfZm9yY2UpKSAlPiUgDQogIHVuZ3JvdXAoKSAlPiUgDQogIGthYmxlKGNhcHRpb24gPSAiVG90YWwgVXNlIG9mIEZvcmNlIGJ5IEZhY2lsaXR5IiwNCiAgICAgICAgY29sLm5hbWVzID0gYygiRmFjaWxpdHkiLCAiVG90YWwgVXNlIG9mIEZvcmNlIGJ5IEZhY2lsaXR5IikpICU+JSANCiAga2FibGVfc3R5bGluZyhjKCJob3ZlciIsICJzdHJpcGVkIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIikpICU+JSANCiAgc2Nyb2xsX2JveChoZWlnaHQgPSAiMzAwcHgiKQ0KYGBgDQoNCiMjIEZhY2V0IFBsb3Qgb2YgVXNlIG9mIEZvcmNlIGJ5IEZhY2lsaXR5DQoNCmBgYHtyIHVzZS1mb3JjZS1mYWNldCwgZmlnLmhlaWdodD00MH0NCiMgR2VuZXJhdGluZyBhIGxpbmV0eXBlIHZlY3RvciBmb3IgdXNlIGluIHRoZSBwbG90DQpwbG90X2xpbmVzIDwtIGMoDQogICAgInNvbGlkIiwNCiAgICAic29saWQiLA0KICAgICJzb2xpZCIsDQogICAgInNvbGlkIiwNCiAgICAic29saWQiLA0KICAgICJzb2xpZCIsDQogICAgInNvbGlkIiwNCiAgICAiZG90dGVkIg0KICAgICkNCg0KIyBVc2UgQ29sb3IgQnJld2VyIHRvIHNldCBjb2xvcnMgYW5kIG1vZGlmeQ0KIyB0aGUgbGFzdCBjb2xvciB0byBiZSBibGFjayBmb3IgdG90YWxzLg0KcGxvdF9jb2xvcnMgPC0gYnJld2VyLnBhbCg4LCAiUGFpcmVkIikNCnBsb3RfY29sb3JzWzhdIDwtICIjMDAwMDAwIg0KDQojIENyZWF0ZSBwbG90IGxhYmVscw0KcGxvdF9sYWJlbHMgPC0gYygNCiAgICAiSW1tZWRpYXRlIFVzZSBvZiBGb3JjZSBJbmNpZGVudHMiLA0KICAgICJDYWxjdWxhdGVkIFVzZSBvZiBGb3JjZSBJbmNpZGVudHMiLA0KICAgICJVc2VzIG9mIEZvcmNlIHdpdGggQ2hlbWljYWwgQWdlbnRzIiwNCiAgICAiSW5jaWRlbnRzIFdoZXJlIE5vbi1MZXRoYWwgV2VhcG9ucyBXZXJlIFVzZWQiLA0KICAgICJUaW1lcyA0LzUgUG9pbnQgUmVzdHJhaW50cyBVc2VkIiwNCiAgICAiVXNlIG9mIEZvcmNlIFdpdGggU2VyaW91cyBJbmp1cnkiLA0KICAgICJTdHJpcCBTZWFyY2hlcyIsDQogICAgIlRvdGFsIERpc2NpcGxpbmFyeSIpDQoNCmRmX2ZvcmNlICU+JSANCiAgDQogICMgQ2FsbGluZyB0aGUgcGxvdCBhbmQgZm9ybWF0dGluZw0KICBnZ3Bsb3QoYWVzKHg9ZGF0ZSwgeSA9IHVzZV9vZl9mb3JjZV9jb3VudCwgbGluZXR5cGU9dXNlX29mX2ZvcmNlX3R5cGUpKSsNCiAgZ2VvbV9saW5lKGFlcyhjb2xvciA9IHVzZV9vZl9mb3JjZV90eXBlKSwgc2l6ZSA9IC42NSkgKw0KICANCiAgIyBzZXR0aW5nIHRoZSBsaW5ldHlwZQ0KICBzY2FsZV9saW5ldHlwZV9tYW51YWwoDQogICAgdmFsdWVzID0gcGxvdF9saW5lcywNCiAgICBsYWJlbHMgPSBwbG90X2xhYmVscywNCiAgICBuYW1lID0gIlVzZSBvZiBGb3JjZSBUeXBlOiIsDQogICAgZ3VpZGUgPSBndWlkZV9sZWdlbmQobnJvdyA9IDgpDQogICAgKSsNCiAgDQogICMgU2V0dGluZyB0aGUgY29sb3INCiAgc2NhbGVfY29sb3JfbWFudWFsKA0KICB2YWx1ZXMgPSBwbG90X2NvbG9ycywNCiAgbGFiZWxzID0gcGxvdF9sYWJlbHMsDQogIG5hbWUgPSAiVXNlIG9mIEZvcmNlIFR5cGU6IiwNCiAgKSsNCg0KICBsYWJzKHRpdGxlID0gIkRpc2NpcGxpbmFyeSIpKw0KICB5bGFiKCJOdW1iZXIgb2YgRGlzY2lwbGluYXJ5IEluZnJhY3Rpb25zIikrDQogIHhsYWIoIkRhdGUiKSsNCiAgdGhlbWUoDQogICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gOCksDQogICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSINCiAgICApKw0KDQogICAgIyBTZXQgdGhlIGxlZ2VuZCB0byBtdWx0aXBsZSByb3dzDQogIGd1aWRlcyhjb2wgPSBndWlkZV9sZWdlbmQobnJvdyA9OCkpKw0KICANCiAgIyBXcmFwDQogIGZhY2V0X3dyYXAofiBmYWNpbGl0eSwgbmNvbD0zKQ0KYGBgDQo=